1. Field of the Invention
This invention relates generally to the field of computer graphics and, more particularly, to font operations that may be performed in a computer graphics system.
2. Description of the Related Art
A computer system typically relies upon its graphics system for producing visual output on the computer screen or display device. Early graphics systems were only responsible for taking what the processor produced as output and displaying it on the screen. In essence, they acted as simple translators or interfaces. Modern graphics systems, however, incorporate graphics processors with a great deal of processing power. They now act more like coprocessors than like simple translators. This change is due to the recent increase in both the complexity and amount of data being sent to the display device. For example, modern computer displays have many more pixels, greater color depth, and are able to display images with higher refresh rates than earlier models. Similarly, the images displayed are now more complex and may involve advanced techniques such as anti-aliasing and texture mapping.
As a result, without considerable processing power in the graphics system, the CPU would spend a great deal of time performing graphics calculations. This could rob the computer system of the processing power needed for performing other tasks associated with program execution and thereby dramatically reduce overall system performance. With a powerful graphics system, however, when the CPU is instructed to draw a box on the screen, the CPU is freed from having to compute the position and color of each pixel. Instead, the CPU may send a request to the video card stating, xe2x80x9cdraw a box at these coordinates.xe2x80x9d The graphics system then draws the box, freeing the processor to perform other tasks.
Generally, a graphics system in a computer is a type of video adapter that contains its own processor to boost performance levels. These processors are specialized for computing graphical transformations, so they tend to achieve better results than the general-purpose CPU used by the computer system. In addition, they free up the computer""s CPU to execute other commands while the graphics system is handling graphics computations. The popularity of graphics applications, and especially multimedia applications, has made high performance graphics systems a common feature in many new computer systems. Most computer manufacturers now bundle a high performance graphics system with their computing systems.
A modem graphics system may generally operate as follows. First, graphics data is initially read from a computer system""s main memory into the graphics system. The graphics data may include geometric primitives such as polygons (e.g., triangles), NURBS (Non-Uniform Rational B-Splines), sub-division surfaces, voxels (volume elements) and other types of data. The various types of data are typically converted into triangles (e.g., three vertices having at least position and color information). Then, transform and lighting calculation units receive and process the triangles. Transform calculations typically include changing a triangle""s coordinate axis, while lighting calculations typically determine what effect, if any, lighting has on the color of triangle""s vertices. The transformed and lit triangles may then be conveyed to a clip test/back face culling unit that determines which triangles are outside the current parameters for visibility (e.g., triangles that are off screen). These triangles are typically discarded to prevent additional system resources from being spent on non-visible triangles.
Next, the triangles that pass the clip test and back-face culling may be translated into screen space. The screen space triangles may then be forwarded to the set-up and draw processor for rasterization. Rasterization typically refers to the process of generating actual pixels (or samples) by interpolation from the vertices. The rendering process may include interpolating slopes of edges of the polygon or triangle, and then calculating pixels or samples on these edges based on these interpolated slopes. Pixels or samples may also be calculated in the interior of the polygon or triangle.
As noted above, in some cases samples are generated by the rasterization process instead of pixels. A pixel typically has a one-to-one correlation with the hardware pixels present in a display device, while samples are typically more numerous than the hardware pixel elements and need not have any direct correlation to the display device. Where pixels are generated, the pixels may be stored into a frame buffer, or possibly provided directly to refresh the display. Where samples are generated, the samples may be stored into a sample buffer or frame buffer. The samples may later be accessed and filtered to generate pixels, which may then be stored into a frame buffer, or the samples may possibly be filtered to form pixels that are provided directly to refresh the display without any intervening frame buffer storage of the pixels.
A converter (e.g., a digital-to-analog converter) converts the pixels into an appropriate display signal usable by a display device. If samples are used, the samples may be read out of sample buffer or frame buffer and filtered to generate pixels, which may be stored and later conveyed to a converter. The signal from such a converter is conveyed to a display device such as a computer monitor, LCD display, or projector.
One area in which it is desirable to improve graphics systems performance is the performance of font operations such as text and fill operations. Font operations accept font information from a host and expand that information to indicate whether foreground or background color should be rendered into the frame buffer at a given location.
Various embodiments of methods and systems for performing font operations are disclosed. In one embodiment, a graphics system includes a buffer (e.g., a frame buffer or a texture buffer), a font processor configured to receive a set of font data, and a fragment processor coupled to access the buffer. If the current background color is transparent and a first font data unit in the set indicates that the first coordinate should be the background color, the font processor is configured to generate an enable for a second font data unit in the set instead of generating a disable for the first coordinate. The second font data unit indicates that a second coordinate should be a foreground color. There may be several font data units in between the first and second font data units. These intervening font data units may also indicate that their associated coordinates should be the background color. When the current background color is transparent, the font processor may skip the first font data unit and the intervening font unit in order to process font data units indicating that their corresponding coordinates are the foreground color. The fragment processor is coupled to receive the enable from the font processor and to responsively write an element at the second coordinate into the frame buffer, wherein the element at the second coordinate is the foreground color.
One embodiment of a method of performing a font operation involves receiving a set of font data identifying a font operation to be performed. If a first font data unit in the set indicates that a first coordinate should be a background color and transparent background is enabled, the method involves outputting an enable for a second font data unit in the set. The second font data unit indicates that a second coordinate should be a foreground color. The enable for the second coordinate is output instead of a disable for the first coordinate. If instead the first font data unit in the set indicates that the first coordinate should be a background color and transparent background is disabled, the method may involve outputting a disable for the first coordinate.